package com.tyk.bookstore.front.payment.strategy;

/**
 * @author tyk
 * @description PayAction
 */
public interface PayAction<T> {

    /**
     * 执行支付逻辑：同步执行回调
     *
     * @param t        支付参数
     * @param callback 支付回调
     * @return 支付信息
     */
    default String pay(T t, Runnable callback) {
        throw new UnsupportedOperationException();
    }

    /**
     * 执行支付逻辑：异步执行回调
     *
     * @param t 支付参数
     * @return 支付信息
     */
    default String pay(T t) {
        throw new UnsupportedOperationException();
    }

    /**
     * 异步执行回调
     *
     * @param runnable 回调
     */
    default void callback(Runnable runnable) {
        throw new UnsupportedOperationException();
    }


}
